如何实现文字超出显示为省略号

来源:博客站 01月22日 14:13

在网页设计中,如果希望实现文字超出显示区域时以省略号(...)代替被截断的部分,可以通过CSS来完成。这种效果通常用于标题、列表项或其他需要限制文本长度的元素。以下是一些常见的方法:

方法一:单行文本省略号

对于单行文本,可以使用text-overflow属性结合white-spaceoverflow属性来实现。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>单行文本省略号</title>
    <style>
        .ellipsis {
            width: 200px;           /* 设置宽度 */
            white-space: nowrap;    /* 禁止换行 */
            overflow: hidden;       /* 隐藏溢出内容 */
            text-overflow: ellipsis; /* 用省略号表示溢出内容 */
            border: 1px solid #000;  /* 可选:边框,用于视觉效果 */
        }
    </style>
</head>
<body>
    <div class="ellipsis">
        这是一段很长的文本,它将被截断并显示为省略号。
    </div>
</body>
</html>

方法二:多行文本省略号

对于多行文本,CSS原生没有直接提供类似单行文本省略号的简单属性,但可以通过一些技巧实现。以下是使用-webkit-line-clamp属性(目前主要在WebKit内核的浏览器中支持,如Chrome和Safari)的示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>多行文本省略号</title>
    <style>
        .multiline-ellipsis {
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 3;  /* 显示行数 */
            overflow: hidden;
            text-overflow: ellipsis;
            width: 200px;           /* 设置宽度 */
            border: 1px solid #000;  /* 可选:边框,用于视觉效果 */
        }
    </style>
</head>
<body>
    <div class="multiline-ellipsis">
        这是一段很长的文本,它将被截断并显示为省略号。
        由于这是多行文本,我们可以设置显示多少行,超过的部分用省略号表示。
        这种方法目前在WebKit内核的浏览器中支持得比较好。
    </div>
</body>
</html>

方法三:使用JavaScript实现多行文本省略号

如果需要在所有浏览器中实现多行文本省略号,并且原生CSS属性不能满足需求,可以使用JavaScript或库(如jQuery插件)来实现。这通常涉及计算文本的高度,并手动截断超出部分,然后添加省略号。

以下是一个简单的JavaScript示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JavaScript实现多行文本省略号</title>
    <style>
        .clamp {
            width: 200px;
            line-height: 1.5;       /* 行高,可根据需要调整 */
            max-height: 4.5em;      /* 根据行数 * 行高 设置最大高度 */
            overflow: hidden;
            position: relative;
        }
        .clamp::after {
            content: "...";
            position: absolute;
            bottom: 0;
            right: 0;
            padding-left: 10px;     /* 可选:添加一些间距 */
            background: white;     /* 背景色,确保省略号可见 */
        }
    </style>
</head>
<body>
    <div class="clamp" id="clampText">
        这是一段很长的文本,它将被截断并显示为省略号。
        由于这是多行文本,并且我们将使用JavaScript来实现效果,
        所以需要计算文本的高度,然后手动截断超出部分。
    </div>

    <script>
        function clampText(element, numLines) {
            const lineHeight = parseFloat(getComputedStyle(element).lineHeight);
            const maxHeight = lineHeight * numLines;
            element.style.maxHeight = `${maxHeight}px`;

            // 可选:计算是否需要显示省略号
            if (element.scrollHeight > maxHeight) {
                element.classList.add('clamp');
            } else {
                element.classList.remove('clamp');
            }
        }

        document.addEventListener('DOMContentLoaded', () => {
            const clampElement = document.getElementById('clampText');
            clampText(clampElement, 3); // 设置显示行数
        });
    </script>
</body>
</html>

这些方法应该能够满足大部分网页设计中对于文本超出显示省略号的需求。选择哪种方法取决于具体的浏览器支持要求和项目需求。

原文出处: 内容源于AI仅供参考,请勿使用于商业用途。如若转载请注明原文及出处。
出处地址:http://www.07sucai.com/tech/203.html
版权声明:本文来源地址若非本站均为转载,若侵害到您的权利,请及时联系我们,我们会在第一时间进行处理。
轻松 一刻

今日推荐

媒体查询使用的是什么方法?
NodeJs性能如何进行监控个优化?
html 文档生命周期有哪些?
UniApp 如何处理录音功能?
电脑上的软件如何卸载才干净?
js放在页面body和head有什么区别?
要查看DNS是否正常,可以按照以下步骤进行
js中伪数组转真数组的方法